process.env.DIST_ELECTRON = join(__dirname, '..');
process.env.DIST = join(process.env.DIST_ELECTRON, '../dist');
process.env.PUBLIC = process.env.VITE_DEV_SERVER_URL ? join(process.env.DIST_ELECTRON, '../public') : process.env.DIST;

import { app, BrowserWindow,ipcMain} from 'electron';
import { release } from 'os';
import { join } from 'path';

// Windows 7禁用GPU加速功能
if (release().startsWith('6.1')) app.disableHardwareAcceleration()

// 设置Windows 10+通知的应用程序名称
if (process.platform === 'win32') app.setAppUserModelId(app.getName())

// 判断此应用程序是否成功取得了锁，否则退出
if (!app.requestSingleInstanceLock()) {
  app.quit()
  process.exit(0)
}

// 删除electron安全警告
// 此警告仅在开发模式下显示
// 详情： https://www.electronjs.org/docs/latest/tutorial/security
// process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'

let win: BrowserWindow | null = null

// 开发时的地址
const url = process.env.VITE_DEV_SERVER_URL
// 打包后的地址
const indexHtml = join(process.env.DIST, 'index.html')

// 创建窗口
const createWindow = function () {
  win = new BrowserWindow({
    title: '锁屏预览工具',
    icon: join(process.env.PUBLIC, 'favicon.ico'),
    // 网页功能设置
    webPreferences: {
      preload: join(__dirname, '../preload/index.js'),
      nodeIntegration: true,
      contextIsolation: false,
    },
  })

  // 根据环境不同加载不同地址的index.html
  if (process.env.VITE_DEV_SERVER_URL) {
    win.loadURL(url)
    // 打开开发者工具
    win.webContents.openDevTools()
  } else {
    win.loadFile(indexHtml)
  }
}



// 当Electron 初始化完成
app.whenReady().then(createWindow)


// 当所有的窗口都被关闭时触发
app.on('window-all-closed', () => {
  win = null
  if (process.platform !== 'darwin') app.quit()
})


// 当应用被激活时
app.on('activate', () => {
  // 获取所有窗口
  const allWindows = BrowserWindow.getAllWindows();
  // 如果窗口数量大于0，则使窗口获得焦点，否则创建新窗口
  allWindows.length>0 ? allWindows[0].focus() : createWindow()
})


// 监听渲染进程发送过来的消息
ipcMain.on('message-render',(event,arg)=>{
  console.log('收到渲染进程消息==>'+arg);
  // 同时向渲染进程发送消息
  win!.webContents.send('message-main',new Date())
})
